package ConexaoBackupBD;

import BD.MateriasConcluidasBD;
import BD.TurmaAlunoDisciplinaBD;
import java.io.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class Relatorios {

	private Workbook wb;
	private Sheet sheet;
	private int dimension;
	private Row rows[];
	
	
	//construtor. acho que ele é desnecessario, mas criei mesmo assim

	
	//funcao de escrita

	public void relatorioDeNotas(String nomeSheet, ArrayList<TurmaAlunoDisciplinaBD> listaTurma, String turma, String disciplina, String professor){
                wb = new HSSFWorkbook();
		sheet = wb.createSheet(nomeSheet);
		this.dimension = listaTurma.size() + 8; //8 == tamanho do cabeçalho.
		rows = new Row[this.dimension];

		for(int i = 0; i < this.dimension; i++)
			rows[i] = sheet.createRow(i);
                
                rows[3].createCell(0).setCellValue("Turma: ");
                rows[3].createCell(1).setCellValue(turma);
                rows[4].createCell(0).setCellValue("Disciplina: ");
                rows[4].createCell(1).setCellValue(disciplina);
                rows[5].createCell(0).setCellValue("Professor: ");
                rows[5].createCell(1).setCellValue(professor);
                
                rows[7].createCell(0).setCellValue("RA");
                rows[7].createCell(1).setCellValue("Nome");
                rows[7].createCell(2).setCellValue("Nota");
                rows[7].createCell(3).setCellValue("Frequência");
                
                int i = 8;
                 for(TurmaAlunoDisciplinaBD tadb : listaTurma){
                    rows[i].createCell(0).setCellValue(tadb.getRaAluno());
                    rows[i].createCell(1).setCellValue(tadb.getNomeAluno());
                    rows[i].createCell(2).setCellValue(tadb.getNota());
                    rows[i].createCell(3).setCellValue(tadb.getFreq());
                    i++;
                 }
                
                
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setDialogTitle("Selecione o caminho para salvar o relatório");

            int variableChooser = fileChooser.showSaveDialog(null);

            if (variableChooser != JFileChooser.APPROVE_OPTION) {
                JOptionPane.showMessageDialog(null, "O relatório não pôde ser salvo.", "Janela finalizada", JOptionPane.CANCEL_OPTION);
            }
            else {
                File f = new File(fileChooser.getSelectedFile() + ".csv");
                FileOutputStream fileOut = null;
            try {
                fileOut = new FileOutputStream(f);
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Relatorios.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                wb.write(fileOut);
                JOptionPane.showMessageDialog(null, "O relatório foi salvo com sucesso.", "Janela finalizada", JOptionPane.INFORMATION_MESSAGE);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "O relatório não pôde ser salvo.", "Janela finalizada", JOptionPane.ERROR_MESSAGE);
                Logger.getLogger(Relatorios.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                fileOut.close();
            } catch (IOException ex) {
                Logger.getLogger(Relatorios.class.getName()).log(Level.SEVERE, null, ex);
            }
            }
                		
	}
        
        public void relatorioDeMateriasConcluidas(String nomeSheet, ArrayList<MateriasConcluidasBD> listaMateriasConcluidas, String nomeAluno, String raAluno, String dataIngresso, String curso, String totalCreditos){
            
            wb = new HSSFWorkbook();
		sheet = wb.createSheet(nomeSheet);
		this.dimension = listaMateriasConcluidas.size() + 12; //9 == tamanho do cabeçalho, 2 == numero de linhas após o fim do relatorio
		rows = new Row[this.dimension];

		for(int i = 0; i < this.dimension; i++)
			rows[i] = sheet.createRow(i);
                
                rows[3].createCell(0).setCellValue("Aluno: ");
                rows[3].createCell(1).setCellValue(nomeAluno);
                rows[4].createCell(0).setCellValue("RA: ");
                rows[4].createCell(1).setCellValue(raAluno);
                rows[5].createCell(0).setCellValue("Data de ingresso: ");
                rows[5].createCell(1).setCellValue(dataIngresso);
                rows[6].createCell(0).setCellValue("Curso:");
                rows[6].createCell(1).setCellValue(curso);

                
                rows[8].createCell(0).setCellValue("Ano");
                rows[8].createCell(1).setCellValue("Disciplina");
                rows[8].createCell(2).setCellValue("Créditos");
                
                 int i = 9;
                 for(MateriasConcluidasBD mc : listaMateriasConcluidas){
                    rows[i].createCell(0).setCellValue(mc.getAnoTurma());
                    rows[i].createCell(1).setCellValue(mc.getNomeDisciplina());
                    rows[i].createCell(2).setCellValue(mc.getCreditosDisciplina());
                    i++;
                 }
                 
                 rows[i+2].createCell(2).setCellValue("Total: " + totalCreditos );
                
                
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setDialogTitle("Selecione o caminho para salvar o relatório");

            int variableChooser = fileChooser.showSaveDialog(null);

            if (variableChooser != JFileChooser.APPROVE_OPTION) {
                JOptionPane.showMessageDialog(null, "O relatório não pôde ser salvo.", "Janela finalizada", JOptionPane.CANCEL_OPTION);
            }
            else {
                File f = new File(fileChooser.getSelectedFile() + ".csv");
                FileOutputStream fileOut = null;
            try {
                fileOut = new FileOutputStream(f);
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Relatorios.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                wb.write(fileOut);
                JOptionPane.showMessageDialog(null, "O relatório foi salvo com sucesso.", "Janela finalizada", JOptionPane.INFORMATION_MESSAGE);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "O relatório não pôde ser salvo.", "Janela finalizada", JOptionPane.ERROR_MESSAGE);
                Logger.getLogger(Relatorios.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                fileOut.close();
            } catch (IOException ex) {
                Logger.getLogger(Relatorios.class.getName()).log(Level.SEVERE, null, ex);
            }
            }
                		
	}



}